Kwik.Page.include("Kwik.Collections.Hashtable.js");
Kwik.Page.include("Kwik.Data.Parameter.js");
Kwik.Page.include("Kwik.Data.Command.js");

/**
* Data parameter collection
* @extends Kwik.Collections.Hashtable
* @requires Kwik.Collections.Hashtable
* @requires Kwik.Data.Parameter
* @requires Kwik.Data.Command
* @constructor
* @created 12:37 AM 7/29/2009
* @modified 12:37 AM 7/29/2009
*/
Kwik.Data.ParameterCollection = function(config)
{
	/** @ignore */
	Kwik.Utility.extend(this, "Kwik.Collections.Hashtable");
	this.__class.push("Kwik.Data.ParameterCollection");

	/** Reference to a parent object @type Kwik.Data.Command */
	this.parent = null;

	/** Add a parameter to this collection @type Kwik.Data.Parameter */
	this.add = function ParameterCollection_add(name, parameter)
	{
		parameter = parameter || new Kwik.Data.Parameter({name: name});
		parameter.parent = this;
		return this.Kwik$Collections$Hashtable.add(name, parameter);
	};

	/** Configure this parameter collection @type Kwik.Data.ParameterCollectionConfig */
	this.configure = function ParameterCollection_configure(config)
	{
		config = this.Kwik$Collections$Hashtable.configure(config);
		if(config.parent){this.parent = config.parent;}
		return config;
	};

	/** @ignore */
	this.main = function ParameterCollection_main(config)
	{
		if(config){this.configure(config);}
	}; this.main(config);
};